草庐IT

TypeScript 运算符

全部标签

c++ - c 和 c++ 中 sizeof 运算符的工作是否不同

这个问题在这里已经有了答案:Sizeofcharacter('a')inC/C++(4个答案)关闭9年前。我写了一个小的printf语句,它在C和C++中的工作方式不同:inti;printf("%d%d%d%d%d\n",sizeof(i),sizeof('A'),sizeof(sizeof('A')),sizeof(float),sizeof(3.14));上述程序使用gcc编译器在c中的输出是44848使用g++编译器在c++中上述程序的输出是41848我预计41448在c中。但结果并非如此。printfsizeof(sizeof('A'))中的第三个参数给出8谁能告诉我这是怎么

c++运算符重载,定义对象的负数

我正在定义一个NS类,我希望能够对此类的对象执行数学运算。I,成功编译重载+,-,*,/,...我的问题是我无法编译包含如下部分的代码:NSa,b;a=-b;如何定义对象的反面? 最佳答案 您以非常类似于重载二进制-运算符的方式来执行此操作。相反,如果它是成员,则将其设为空函数,如果它是非成员,则将其设为一元函数。例如,作为成员(member):classNS{public://AppliestothisNSoperator-(){/*implement*/}};作为非成员(member):classNS{friendNSopera

Vite4+Typescript+Vue3+Pinia 从零搭建(2) - ts配置

项目代码同步至码云weiz-vue3-template关于tsconfig的配置字段可查看其他文档,如typeScripttsconfig配置详解tsconfig.json文件修改如下:{"compilerOptions":{"target":"ESNext",//将代码编译为最新版本的JS"useDefineForClassFields":true,"module":"ESNext",//使用ESModule格式打包编译后的文件"lib":["ESNext","DOM","DOM.Iterable"],//引入ES最新特性和DOM接口的类型定义"skipLibCheck":true,//跳过

C++:继承和运算符重载

我有两个结构:templatestructOdp{Tm_t;Toperator=(constTrhs){returnm_t=rhs;}};structFtw:publicOdp{booloperator==(constFtw&rhs){returnm_t==rhs.m_t;}};我想编译以下内容:intmain(){Odpodp;odp=2;Ftwf;f=2;//C2679:nooperatorcouldbefound}有什么方法可以让它工作,还是我必须在Ftw中也定义运算符? 最佳答案 问题是编译器通常会为你创建一个operato

c++重载下标运算符的两个版本

我的问题是关于以下两者之间的区别:constT&operator[](constintnIndex)const;和:T&operator[](constintnIndex);为什么我需要将它们都定义在一个类中,目的是什么?后者还不够吗? 最佳答案 在其末尾带有const的成员函数声明允许甚至在const对象上调用该函数。这仅对不修改对象状态的成员函数有意义。假设您拥有的重载这些运算符的类称为X。据推测,它的行为有点像容器,可以通过此operator[]访问它包含的元素。现在假设用户想要使用constX:constXx=/*filli

c++ - 推断模板的运算符/函数的返回类型

这样的事情可能吗?//WecanevenassumeTandUarenativeC++typestemplatemagically_deduce_return_type_of(T*U)my_mul(){returnT*U;}或者是否有人必须破解一个return_type结构并将其专门用于每对原生类型? 最佳答案 听说过decltype?在C++0x中你可以这样做templateautomul(Tx,Uy)->decltype(x*y){returnx*y;} 关于c++-推断模板的运算符

c++ - 禁止使用逗号运算符

我从不使用逗号运算符。但有时,当我写一些递归时,我会犯一个愚蠢的错误:我忘记了函数名。这就是返回最后一个操作数而不是递归调用结果的原因。简化示例:intbinpow(inta,intb){if(!b)return1;if(b&1)returna*binpow(a,b-1);return(a*a,b/2);//commaoperator}是否有可能得到编译错误而不是不正确、难以调试的代码? 最佳答案 是的,有一个警告。gcc有-Wunused-value警告(或-Werror错误)。这将对您的示例生效,因为a*a无效。编译结果:tes

c++ - 在 typedef 结构体上使用 sizeof 运算符

这可能太明显了。但是,尽管许多stackoverflow线程讨论了这个问题的不同方面,但我找不到具体的答案。typedefstruct_tmp{unsignedinta;unsignedintb;}tmp;intmain(){intc=10;if(c我将这个程序编译为-g++-lstdc++a.cpp我得到一个错误-expectedprimary-expressionbefore‘)’token我想我遗漏了一些非常明显和直接的东西。但似乎无法确定它:-/谢谢! 最佳答案 5.3.3Sizeof[expr.sizeof]1)Thesi

c++ - C 与 C++ 中的三元运算符

这个问题在这里已经有了答案:Errorsusingternaryoperatorinc(5个答案)关闭7年前。C和C++之间有很多差异,并且卡在其中之一相同的代码在C中出错,而在C++中执行良好请说明原因intmain(void){inta=10,b;a>=5?b=100:b=200;}上面的代码在C中给出了一个错误,指出lvalue是必需的,而相同的代码在C++中编译得很好

c++ - 默认赋值运算符如何在结构中工作?

假设我在C++中有一个包含名称和数字的结构,例如structperson{charname[20];intssn;};假设我声明了两个person变量:persona;personb;其中a.name="George"、a.ssn=1和b.name="Fred"和b.ssn=2.假设稍后在代码中a=b;printf("%s%d\n",a.name,a.ssn); 最佳答案 默认赋值运算符对每个成员进行成员递归赋值。 关于c++-默认赋值运算符如何在结构中工作?,我们在StackOverf